package cn.iocoder.yudao.module.bpm.component;

import cn.hutool.core.date.DateUtil;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @ClassName BpmOaApplySubCmp
 * @Description TODO
 * @Author dingyongze
 * @Date 2024/10/24 15:45
 * @Version 1.0
 */
@Component("BusinessTripCmp")
public class BusinessTripCmp extends BaseNodeComponent {
    @Override
    public void process() throws Exception {
        try {
            if (isCreateBefore() || isUpdateBefore()) {
                // 定义日期格式
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                JSONObject jsonObject =  this.getContextBean(JSONObject.class);
                Long  startDateStr = jsonObject.getLong("ksrq");
                Long endDateStr = jsonObject.getLong("jsrq");

                // 将时间戳转换为 Instant
                Instant instant = Instant.ofEpochMilli(startDateStr);

                // 将 Instant 转换为 ZonedDateTime，指定时区
                // 这里使用系统默认时区，也可以指定其他时区，例如 ZoneId.of("UTC")
                ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault());

                // 从 ZonedDateTime 提取 LocalDate
                LocalDate startDate = zonedDateTime.toLocalDate();

                // 将时间戳转换为 Instant
                Instant endinstant = Instant.ofEpochMilli(endDateStr);

                // 将 Instant 转换为 ZonedDateTime，指定时区
                // 这里使用系统默认时区，也可以指定其他时区，例如 ZoneId.of("UTC")
                ZonedDateTime endzonedDateTime = endinstant.atZone(ZoneId.systemDefault());

                // 从 ZonedDateTime 提取 LocalDate
                LocalDate endDate = endzonedDateTime.toLocalDate();


                // 比较 startDate 和 endDate 的年月日
                if (startDate.isBefore(endDate) || startDate.isEqual(endDate)) {
                    System.out.println("startDate 的年月日小于等于 endDate");
                } else {
                    throw new ServiceException(500, "开始时间不能大于结束时间");
                }

            }
        } catch (ServiceException e) {

        }

    }
}
